package com.info.zhiduoduo.wxsdk.domain.app;

import java.util.HashMap;
import java.util.Map;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class WxTempleteMessage {

	/*
	* {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",
           "miniprogram":{
             "appid":"xiaochengxuappid12345",
             "pagepath":"index?foo=bar"
           },
           "data":{
                   "first": {
                       "value":"恭喜你购买成功！",
                       "color":"#173177"
                   },
                   "keyword1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keyword2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keyword3": {
                       "value":"2014年9月22日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买！",
                       "color":"#173177"
                   }
           }
       }
	* */

	/** 微信用户的openid */
	private String touser;
	/** 公众号后台设置的模板id */
	private String template_id;
	/** 模板跳转链接 */
	private String url;
	/** 跳小程序所需数据，不需跳小程序可不用传该数据 */
	private Miniprogram miniprogram;
	/** 模板数据 */
	private Map<String, ValueColor> data;

	/**
	 * 添加数据到消息体中
	 *
	 * @param key
	 * @param value
	 */
	public void putData(String key, String value) {
		putData(key, value, "");
	}


	/**
	 * 添加数据到消息体中
	 *
	 * @param key
	 * @param value
	 */
	public void putData(String key, String value, String color) {
		if (data == null) data = new HashMap<>();
		data.put(key, ValueColor.of(value, color));
	}



	/** 小程序相关的跳转设置 */
	@Data
	public static class Miniprogram {

		/**
		 appid : xiaochengxuappid12345
		 pagepath : index?foo=bar
		 */

		/** 所需跳转到的小程序appid（该小程序appid必须与发模板消息的公众号是绑定关联关系） */
		private String appid;
		/** 所需跳转到小程序的具体页面路径，支持带参数,（示例index?foo=bar） */
		private String pagepath;
	}

	/**
	 * 模板中对应的参数的值和显示的颜色
	 */
	@Data
	public static class ValueColor {

		/** 参数值 */
		private String value;
		/** 模板内容字体颜色，不填默认为黑色 */
		private String color;

		public ValueColor() {

		}

		public ValueColor(String value, String color) {
			this.value = value;
			this.color = color;
		}

		public static ValueColor of(String value) {
			return new ValueColor(value, "");
		}

		public static ValueColor of(String value, String color) {
			return new ValueColor(value, color);
		}
	}
}
